home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / ply15dat.zip / POLYHDRN.PI < prev    next >
Text File  |  1992-11-07  |  10KB  |  203 lines

  1. //
  2. // Demonstration of creating polyhedrons from vertex/face information
  3. //
  4. viewpoint {
  5.    from  <0,0,-12>
  6.    at    <0,0,0>
  7.    up    <0,1,0>
  8.    angle 45
  9.    resolution 256, 256
  10.    }
  11.  
  12. background midnight_blue
  13. light < 20,30,-20>
  14.  
  15. include "..\colors.inc"
  16.  
  17. define tetrahedron_faces
  18.      [<0, 1, 2>, <0, 2, 3>, <0, 3, 1>, <1, 3, 2>]
  19.  
  20. define tetrahedron_vertices
  21.      [<0, 0, sqrt(3)>,
  22.       <0, (2*sqrt(2)*sqrt(3))/3, -sqrt(3)/3>, 
  23.       <-sqrt(2), -(sqrt(2)*sqrt(3))/3, -sqrt(3)/3>, 
  24.       <sqrt(2), -(sqrt(2)*sqrt(3))/3, -sqrt(3)/3>]
  25.  
  26. define cube_faces
  27.      [[0, 1, 2, 3], [0, 3, 5, 6], [0, 6, 7, 1],
  28.       [1, 7, 4, 2], [4, 7, 6, 5], [2, 4, 5, 3]]
  29.  
  30. define cube_vertices
  31.      [<1, 1, 1>, <-1, 1, 1>, <-1, -1, 1>, <1, -1, 1>,
  32.       <-1, -1, -1>, <1, -1, -1>, <1, 1, -1>, <-1, 1, -1>]
  33.  
  34. define octahedron_faces
  35.      [<0, 1, 2>, <0, 2, 4>, <0, 4, 5>, <0, 5, 1>,
  36.       <1, 5, 3>, <1, 3, 2>, <3, 5, 4>, <2, 3, 4>]
  37.  
  38. define octahedron_vertices
  39.      [<0, 0, 1>, <1, 0, 0>, <0, 1, 0>,
  40.       <0, 0, -1>, <-1, 0, 0>, <0, -1, 0>]
  41.  
  42. define dodecahedron_faces
  43.      [[2, 0, 1, 4, 5], [11, 10, 4, 1, 6], [16, 12, 5, 4, 10], 
  44.       [13, 8, 2, 5, 12], [9, 3, 0, 2, 8], [7, 6, 1, 0, 3], 
  45.       [3, 9, 15, 14, 7], [8, 13, 18, 15, 9], [12, 16, 19, 18, 13], 
  46.       [10, 11, 17, 19, 16], [6, 7, 14, 17, 11], [17, 14, 15, 18, 19]]
  47.  
  48. define dodecahedron_vertices
  49.   [<0.1171133902139618, -1.000511576276664, -0.3621589273242113>, 
  50.    <-0.2984036824225265, -0.5817988070943417, -0.847563231579627>, 
  51.    <0.7957196239318588, -0.6599726122576239, -0.2777850442631916>, 
  52.    <-0.2354424399154574, -0.995440477478119, 0.3155362956874772>, 
  53.    <0.1233988775001608, 0.01751887980296279, -1.063185706833948>, 
  54.    <0.7996042687105845, -0.03079518881785797, -0.7110434210240867>, 
  55.    <-0.907763186347153, -0.3179489854175332, -0.4698643668832807>, 
  56.    <-0.868850998503861, -0.5735935968779865, 0.2489706732667203>, 
  57.    <0.862565511217654, -0.4444368592016375, 0.4520561062430151>, 
  58.    <0.2252723078505214, -0.6517674020412752, 0.81874886058316>, 
  59.    <-0.2252723078505258, 0.6517674020412736, -0.818748860583157>, 
  60.    <-0.862565511217653, 0.4444368592016384, -0.4520561062430158>, 
  61.    <0.868850998503857, 0.5735935968779876, -0.2489706732667215>, 
  62.    <0.907763186347152, 0.317948985417531, 0.469864366883284>, 
  63.    <-0.7996042687105915, 0.03079518881786086, 0.7110434210240858>, 
  64.    <-0.1233988775001686, -0.01751887980296174, 1.063185706833949>, 
  65.    <0.2354424399154601, 0.99544047747812, -0.315536295687476>, 
  66.    <-0.7957196239318574, 0.6599726122576284, 0.2777850442631883>, 
  67.    <0.2984036824225249, 0.5817988070943394, 0.847563231579629>, 
  68.    <-0.1171133902139571, 1.000511576276665, 0.3621589273242109>]
  69.  
  70. define icosahedron_faces
  71.  [ <0, 5, 1>, <0, 1, 2>, <0, 2, 3>, <0, 3, 4>, <0, 4, 5>, <1, 10, 2>, 
  72.    <1, 5, 9>, <1, 9, 10>, <2, 11, 3>, <2, 10, 11>, <3, 7, 4>, 
  73.    <3, 11, 7>, <4, 8, 5>, <4, 7, 8>, <5, 8, 9>, <6, 8, 7>, <6, 9, 8>, 
  74.    <6, 10, 9>, <6, 11, 10>, <6, 7, 11> ]
  75.  
  76. define icosahedron_vertices
  77.  [ <0.4249358858193742, -0.6234212590752522, -0.901521749427252>, 
  78.    <-0.5999406907417391, 0.05914133178387721, -1.009227188986324>, 
  79.    <0.4980672603913731, 0.6101449500603583, -0.872707378430782>, 
  80.    <1.170388006823068, -0.06734654200022822, -0.0873067158600265>, 
  81.    <0.4878971283264427, -1.037062929459035, 0.2615777778398508>, 
  82.    <-0.606226178027942, -0.958889124295748, -0.3082004094765843>, 
  83.    <-0.4249358858193759, 0.6234212590752533, 0.90152174942725>, 
  84.    <0.5999406907417364, -0.05914133178387813, 1.009227188986327>, 
  85.    <-0.4980672603913764, -0.6101449500603557, 0.87270737843078>, 
  86.    <-1.170388006823072, 0.0673465420002311, 0.0873067158600247>, 
  87.    <-0.4878971283264417, 1.037062929459036, -0.2615777778398516>, 
  88.    <0.606226178027942, 0.958889124295747, 0.3082004094765856> ]
  89.  
  90. define tcf tetrahedron_faces
  91. define tcv tetrahedron_vertices
  92. define tct shiny_red
  93. define tetrahedron
  94. object {
  95.    object { polygon 3, tcv[tcf[ 0][0]], tcv[tcf[ 0][1]], tcv[tcf[ 0][2]] } +
  96.    object { polygon 3, tcv[tcf[ 1][0]], tcv[tcf[ 1][1]], tcv[tcf[ 1][2]] } +
  97.    object { polygon 3, tcv[tcf[ 2][0]], tcv[tcf[ 2][1]], tcv[tcf[ 2][2]] } +
  98.    object { polygon 3, tcv[tcf[ 3][0]], tcv[tcf[ 3][1]], tcv[tcf[ 3][2]] }
  99.    tct
  100.    }
  101.  
  102. define ccf cube_faces
  103. define ccv cube_vertices
  104. define cct shiny_red
  105. define cube
  106. object {
  107.    object { polygon 4, ccv[ccf[ 0][0]], ccv[ccf[ 0][1]], ccv[ccf[ 0][2]],
  108.                        ccv[ccf[ 0][3]] } +
  109.    object { polygon 4, ccv[ccf[ 1][0]], ccv[ccf[ 1][1]], ccv[ccf[ 1][2]],
  110.                        ccv[ccf[ 1][3]] } +
  111.    object { polygon 4, ccv[ccf[ 2][0]], ccv[ccf[ 2][1]], ccv[ccf[ 2][2]],
  112.                        ccv[ccf[ 2][3]] } +
  113.    object { polygon 4, ccv[ccf[ 3][0]], ccv[ccf[ 3][1]], ccv[ccf[ 3][2]],
  114.                        ccv[ccf[ 3][3]] } +
  115.    object { polygon 4, ccv[ccf[ 4][0]], ccv[ccf[ 4][1]], ccv[ccf[ 4][2]],
  116.                        ccv[ccf[ 4][3]] } +
  117.    object { polygon 4, ccv[ccf[ 5][0]], ccv[ccf[ 5][1]], ccv[ccf[ 5][2]],
  118.                        ccv[ccf[ 5][3]] }
  119.    cct
  120.    }
  121.  
  122. define ocf octahedron_faces
  123. define ocv octahedron_vertices
  124. define oct shiny_red
  125. define octahedron
  126. object {
  127.    object { polygon 3, ocv[ocf[ 0][0]], ocv[ocf[ 0][1]], ocv[ocf[ 0][2]] } +
  128.    object { polygon 3, ocv[ocf[ 1][0]], ocv[ocf[ 1][1]], ocv[ocf[ 1][2]] } +
  129.    object { polygon 3, ocv[ocf[ 2][0]], ocv[ocf[ 2][1]], ocv[ocf[ 2][2]] } +
  130.    object { polygon 3, ocv[ocf[ 3][0]], ocv[ocf[ 3][1]], ocv[ocf[ 3][2]] } +
  131.    object { polygon 3, ocv[ocf[ 4][0]], ocv[ocf[ 4][1]], ocv[ocf[ 4][2]] } +
  132.    object { polygon 3, ocv[ocf[ 5][0]], ocv[ocf[ 5][1]], ocv[ocf[ 5][2]] } +
  133.    object { polygon 3, ocv[ocf[ 6][0]], ocv[ocf[ 6][1]], ocv[ocf[ 6][2]] } +
  134.    object { polygon 3, ocv[ocf[ 7][0]], ocv[ocf[ 7][1]], ocv[ocf[ 7][2]] }
  135.    oct
  136.    }
  137.  
  138. define dcv dodecahedron_vertices
  139. define dcf dodecahedron_faces
  140. define dct shiny_red
  141. define dodecahedron
  142. object {
  143.    object { polygon 5, dcv[dcf[ 0][0]], dcv[dcf[ 0][1]], dcv[dcf[ 0][2]],
  144.                        dcv[dcf[ 0][3]], dcv[dcf[ 0][4]] } +
  145.    object { polygon 5, dcv[dcf[ 1][0]], dcv[dcf[ 1][1]], dcv[dcf[ 1][2]],
  146.                        dcv[dcf[ 1][3]], dcv[dcf[ 1][4]] } +
  147.    object { polygon 5, dcv[dcf[ 2][0]], dcv[dcf[ 2][1]], dcv[dcf[ 2][2]],
  148.                        dcv[dcf[ 2][3]], dcv[dcf[ 2][4]] } +
  149.    object { polygon 5, dcv[dcf[ 3][0]], dcv[dcf[ 3][1]], dcv[dcf[ 3][2]],
  150.                        dcv[dcf[ 3][3]], dcv[dcf[ 3][4]] } +
  151.    object { polygon 5, dcv[dcf[ 4][0]], dcv[dcf[ 4][1]], dcv[dcf[ 4][2]],
  152.                        dcv[dcf[ 4][3]], dcv[dcf[ 4][4]] } +
  153.    object { polygon 5, dcv[dcf[ 5][0]], dcv[dcf[ 5][1]], dcv[dcf[ 5][2]],
  154.                        dcv[dcf[ 5][3]], dcv[dcf[ 5][4]] } +
  155.    object { polygon 5, dcv[dcf[ 6][0]], dcv[dcf[ 6][1]], dcv[dcf[ 6][2]],
  156.                        dcv[dcf[ 6][3]], dcv[dcf[ 6][4]] } +
  157.    object { polygon 5, dcv[dcf[ 7][0]], dcv[dcf[ 7][1]], dcv[dcf[ 7][2]],
  158.                        dcv[dcf[ 7][3]], dcv[dcf[ 7][4]] } +
  159.    object { polygon 5, dcv[dcf[ 8][0]], dcv[dcf[ 8][1]], dcv[dcf[ 8][2]],
  160.                        dcv[dcf[ 8][3]], dcv[dcf[ 8][4]] } +
  161.    object { polygon 5, dcv[dcf[ 9][0]], dcv[dcf[ 9][1]], dcv[dcf[ 9][2]],
  162.                        dcv[dcf[ 9][3]], dcv[dcf[ 9][4]] } +
  163.    object { polygon 5, dcv[dcf[10][0]], dcv[dcf[10][1]], dcv[dcf[10][2]],
  164.                        dcv[dcf[10][3]], dcv[dcf[10][4]] } +
  165.    object { polygon 5, dcv[dcf[11][0]], dcv[dcf[11][1]], dcv[dcf[11][2]],
  166.                        dcv[dcf[11][3]], dcv[dcf[11][4]] }
  167.    dct
  168.    }
  169.  
  170. define icf icosahedron_faces
  171. define icv icosahedron_vertices
  172. define ict shiny_red
  173. define icosahedron
  174. object {
  175.    object { polygon 3, icv[icf[ 0][0]], icv[icf[ 0][1]], icv[icf[ 0][2]] } +
  176.    object { polygon 3, icv[icf[ 1][0]], icv[icf[ 1][1]], icv[icf[ 1][2]] } +
  177.    object { polygon 3, icv[icf[ 2][0]], icv[icf[ 2][1]], icv[icf[ 2][2]] } +
  178.    object { polygon 3, icv[icf[ 3][0]], icv[icf[ 3][1]], icv[icf[ 3][2]] } +
  179.    object { polygon 3, icv[icf[ 4][0]], icv[icf[ 4][1]], icv[icf[ 4][2]] } +
  180.    object { polygon 3, icv[icf[ 5][0]], icv[icf[ 5][1]], icv[icf[ 5][2]] } +
  181.    object { polygon 3, icv[icf[ 6][0]], icv[icf[ 6][1]], icv[icf[ 6][2]] } +
  182.    object { polygon 3, icv[icf[ 7][0]], icv[icf[ 7][1]], icv[icf[ 7][2]] } +
  183.    object { polygon 3, icv[icf[ 8][0]], icv[icf[ 8][1]], icv[icf[ 8][2]] } +
  184.    object { polygon 3, icv[icf[ 9][0]], icv[icf[ 9][1]], icv[icf[ 9][2]] } +
  185.    object { polygon 3, icv[icf[10][0]], icv[icf[10][1]], icv[icf[10][2]] } +
  186.    object { polygon 3, icv[icf[11][0]], icv[icf[11][1]], icv[icf[11][2]] } +
  187.    object { polygon 3, icv[icf[12][0]], icv[icf[12][1]], icv[icf[12][2]] } +
  188.    object { polygon 3, icv[icf[13][0]], icv[icf[13][1]], icv[icf[13][2]] } +
  189.    object { polygon 3, icv[icf[14][0]], icv[icf[14][1]], icv[icf[14][2]] } +
  190.    object { polygon 3, icv[icf[15][0]], icv[icf[15][1]], icv[icf[15][2]] } +
  191.    object { polygon 3, icv[icf[16][0]], icv[icf[16][1]], icv[icf[16][2]] } +
  192.    object { polygon 3, icv[icf[17][0]], icv[icf[17][1]], icv[icf[17][2]] } +
  193.    object { polygon 3, icv[icf[18][0]], icv[icf[18][1]], icv[icf[18][2]] } +
  194.    object { polygon 3, icv[icf[19][0]], icv[icf[19][1]], icv[icf[19][2]] }
  195.    ict
  196.    }
  197.  
  198. tetrahedron { translate <2.5, 0, 0> }
  199. cube { translate <2.5, 0, 0> rotate <0, 0, 72> }
  200. octahedron { translate <2.5, 0, 0> rotate <0, 0, 144> }
  201. dodecahedron { translate <2.5, 0, 0> rotate <0, 0, -144> }
  202. icosahedron { translate <2.5, 0, 0> rotate <0, 0, -72> }
  203.